1585C - Minimize Distance - CodeForces Solution


greedy *1300

Please click on ads to support us..

Python Code:

def Solve(depot, k):
	ind = -1
	l = len(depot)
	sm = 0
	if(l%k):
		sm += depot[ind+(l%k)]*2
		ind += l%k	
	for i in range(l//k):
		sm += depot[ind+k]*2
		ind += k
	return sm 

def fndMax(p, n):
	if(bool(p) and bool(n)):
		return max(p[len(p)-1], n[len(n)-1])
	if(not(bool(p))):
		return n[len(n)-1]
	else:
		return p[len(p)-1]



t = int(input())
while(t):
	n, k = map(int, input().split())
	x = list(map(int, input().split()))
			neg = []
	pos = []
	for i in x:
		if(i<0):
			neg.append(-i)
		else:
			pos.append(i)
	neg.sort()
	pos.sort()
			sPos = Solve(pos, k)
	sNeg = Solve(neg, k)
	mx = fndMax(pos, neg)
	print(sPos+sNeg-mx)
	t-=1


Comments

Submit
0 Comments
More Questions

903C - Boxes Packing
887A - Div 64
755B - PolandBall and Game
808B - Average Sleep Time
1515E - Phoenix and Computers
1552B - Running for Gold
994A - Fingerprints
1221C - Perfect Team
1709C - Recover an RBS
378A - Playing with Dice
248B - Chilly Willy
1709B - Also Try Minecraft
1418A - Buying Torches
131C - The World is a Theatre
1696A - NIT orz
1178D - Prime Graph
1711D - Rain
534A - Exam
1472A - Cards for Friends
315A - Sereja and Bottles
1697C - awoo's Favorite Problem
165A - Supercentral Point
1493A - Anti-knapsack
1493B - Planet Lapituletti
747B - Mammoth's Genome Decoding
1591C - Minimize Distance
1182B - Plus from Picture
1674B - Dictionary
1426C - Increase and Copy
520C - DNA Alignment